#include <algorithm>
#include <cctype> //ctype无法打开，包含tolower()函数和ispunct函数
#include <fstream>
#include <iostream>
#include <list>
#include <map>
#include <memory>
#include <set>
#include <string>
#include <utility> //保存pair的头文件
#include <vector>

using namespace std;

//具体操作时将类的声明置于头文件中
class Employee {
public:
  Employee();          //默认构造函数
  Employee(string &s); //接受一个string的构造函数
  Employee(const Employee &) =
      delete; //不需要拷贝构造函数，怎么可能有人一样。将其声明为 =delete
  Employee &operator=(const Employee &) = delete;
  int number() { return _number; }

private:
  string employee;
  int _number;
  static int
      O_number; // static静态成员数据在类内声明，但只可以在类外定义，在类外定义时可不加static
};

int Employee::O_number = 0;
Employee::Employee() //默认构造函数
{
  _number = O_number++;
}
Employee::Employee(string &s) //接受一个string的构造函数
{
  employee = s;
  _number = O_number++;
}

void show(Employee a) { cout << a.number() << endl; }
int main(int argc, char **argv) {
  Employee a, b, c;
  //   show(a); //调用函数时需要拷贝一次
  //   show(b);
  //   show(c);

  return 0;
}